import cv2
import os

def extract_frames(video_path, folder_first, folder_last):
    # 打开视频文件
    cap = cv2.VideoCapture(video_path)

    if not cap.isOpened():
        print("无法打开视频文件")
        return
    
    # 获取视频的帧数
    total_frames = int(cap.get(cv2.CAP_PROP_FRAME_COUNT))

    # 创建文件夹（如果不存在）
    if not os.path.exists(folder_first):
        os.makedirs(folder_first)
    if not os.path.exists(folder_last):
        os.makedirs(folder_last)

    # 提取第一帧
    cap.set(cv2.CAP_PROP_POS_FRAMES, 0)  # 设置到第一帧
    ret, frame_first = cap.read()
    if ret:
        first_frame_path = os.path.join(folder_first, 'first_frame.jpg')
        cv2.imwrite(first_frame_path, frame_first)  # 保存第一帧
        print(f"第一帧已保存到: {first_frame_path}")
    
    # 提取最后一帧
    cap.set(cv2.CAP_PROP_POS_FRAMES, total_frames - 1)  # 设置到最后一帧
    ret, frame_last = cap.read()
    if ret:
        last_frame_path = os.path.join(folder_last, 'last_frame.jpg')
        cv2.imwrite(last_frame_path, frame_last)  # 保存最后一帧
        print(f"最后一帧已保存到: {last_frame_path}")
    
    # 释放资源
    cap.release()

# 示例调用
video_path = r"C:\Users\86152\Downloads\苹果树6-4.mp4" # 替换为视频文件的路径
folder_first = 'folder_first'  # 第一帧保存文件夹
folder_last = 'folder_last'    # 最后一帧保存文件夹

extract_frames(video_path, folder_first, folder_last)
